package Temp.杂乱无章;/*
基础刷题 神奇算式
由4个不同的数字，组成的一个乘法算式，它们的乘积仍然由这4个数字组成。
比如：
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况，那么，包含上边已列出的3种情况，一共有多少种满足要求的算式。
*/
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class 神奇的算式 {
    public static void main(String[] args) {
        int res = 0;
        for (int x = 1; x < 999; x++) {
            for (int y = x; y < 999; y++) {
                if (SameNum(x, y, x * y) && (Integer.toString(x).length() + Integer.toString(y).length() == 4) && weiyishuzi(x * y)) {
                    res += 1;
                }
            }
        }
        System.out.println(res);
    }

    private static boolean SameNum(int x, int y, int z) {
        char[] xy = (Integer.toString(x) + Integer.toString(y)).toCharArray();
        char[] D = Integer.toString(z).toCharArray();
        Arrays.sort(xy);
        Arrays.sort(D);
        return Arrays.equals(xy, D);
    }

    private static boolean weiyishuzi(int num) {
        char[] numChars = Integer.toString(num).toCharArray();
        Set<Character> set = new HashSet<>();
        for (char c : numChars) {
            set.add(c);
        }
        return set.size() == numChars.length;
    }
}
